package com.md2ppt.engine;

import com.md2ppt.config.PresentationConfig;
import java.nio.file.Path;

/**
 * 演示文稿生成引擎接口
 * 支持多种实现：Aspose.Slides、Apache POI等
 */
public interface PresentationEngine {
    
    /**
     * 获取引擎名称
     */
    String getEngineName();
    
    /**
     * 检查引擎是否可用
     */
    boolean isAvailable();
    
    /**
     * 获取支持的功能
     */
    EngineCapabilities getCapabilities();
    
    /**
     * 生成演示文稿
     */
    GenerationResult generatePresentation(PresentationConfig config, Path outputPath);
    
    /**
     * 引擎功能描述
     */
    record EngineCapabilities(
        boolean supportsAnimations,
        boolean supportsAdvancedEffects,
        boolean supportsVideoEmbedding,
        boolean supportsCustomThemes,
        int maxAnimationEffects
    ) {}
    
    /**
     * 生成结果
     */
    record GenerationResult(
        boolean success,
        String message,
        GenerationStatistics statistics,
        Throwable error
    ) {}
    
    /**
     * 生成统计
     */
    record GenerationStatistics(
        int slidesGenerated,
        int animationsApplied,
        long processingTimeMs,
        long fileSize
    ) {}
}